/* 
 * File:   codage.c
 * Author: FENG Xu <fengxu1989@gmail.com>
 *
 * Created on May 29, 2012, 4:53 PM
 */


#include <stdlib.h>
#include "../h/codage.h"

/*
 * @param: liste symbole-longueur, tableau longueur-nombre, longueur maximale
 * @return: liste symbole-code
 */
listeSC toLSC(listeSL liste, int tabLN[], int lMax){
	unsigned char valeur=0;
	listeSC teteSC=NULL;
	listeSC courantSC=teteSC;
	listeSL courantSL=NULL;
	int i;
	unsigned char premierCode[lMax+1];
	
	for(i=1;i<=lMax;i++){
		valeur+=tabLN[i-1];
		valeur<<=1;
		premierCode[i]=valeur;
	}
	
	if(liste!=NULL){
		for(courantSL=liste; courantSL!=NULL; courantSL=courantSL->suivant){
			courantSC=newLSC(liste->symbole, premierCode[liste->longueur], liste->longueur, NULL);
			premierCode[liste->longueur]++;
			courantSC=courantSC->suivant;
		}
	}
	
	return teteSC;
}

